<script setup>
    import {computed, ref} from 'vue'
    import {useRoute,useRouter} from 'vue-router'

    const route = useRoute()
    const router = useRouter()

    import CartCard from '@/components/cart/CartCard.vue'

    //获取存储点击地址的数据库
    import useUserStore from '@/stores/user.js'
    const curradd = useUserStore()

    //获取订单内的数据库
    import useOrderStore from '@/stores/order.js'   
    const orderSrore = useOrderStore()

    //获取购物车数据库
    import useCartStore from '@/stores/cart.js'
    const cartSrore = useCartStore()

    //点击放回商店
    const goshop = ()=>{
        router.go(-1)
    }

    //获取购物车全部购物车的商品
    const shopCart = computed(()=>{
        return cartSrore.cartList.find(item => item.name === route.query.shopName)
    })

    //获取选中的商品
    const shopCheckList = computed(()=>{
        if (shopCart.value) {
            return shopCart.value.list.filter(item => item.checked)
        }else{
            return []
        }
    })

    //计算选中商品的总价
    const total = computed(()=>{
        return shopCheckList.value.reduce((sum,item) => sum + item.price * item.number,0).toFixed(2)
    })

    //获取选中商品的总数量
    const count = computed(()=>{
        return shopCheckList.value.reduce((sum,item) => sum+item.number,0)
    })


    //提交订单
    const show = ref(false)

    //跳转地址
    const addressShow = ()=>{
        router.push({
            path:'/address'
        })
    }

    //获取点击的地址
    const currentAddress = computed(()=>{
        return curradd.currentUserInfo.currentAddress
    })

    //点击确认按钮
    const offOrder = ()=>{
        //定义订单的结构
        const order = {
            //用户名称
            user:'',
            //商店名称
            shopName:'',
            //购物车内选中的商品数据
            shopCheckedList:[],
            //购物车内选中的商品总价格
            total:'',
            //购物车内选中的商品总数量
            count:'',
        }

        //对订单的结构进行赋值
        order.user = 'zhangsan'
        order.shopName = route.query.shopName
        order.shopCheckedList = shopCheckList.value
        order.total = total.value
        order.count = count.value

        //将订单结构内的数据赋值到订单数据库内
        orderSrore.orderList.push(order)

        //跳转到订单页面
        router.push({
            path:'/order',
        })

        //将购物车所有商品内的数量变为0，并将这个购物车删除
            //将商品数量为0 
            shopCart.value.list.forEach(item => item.number = 0 )
            //将购物车删除
            cartSrore.cartList = cartSrore.cartList.filter(item => item.name != route.query.shopName)
    }

</script>

<template>
    <div class="order_confirmation">
        <div class="order_confirmation_header">
            <div class="order_confirmation_header_title">
                <span class="iconfont title_back" @click="goshop">&#xe697;</span>
                <div class="title_text">确定订单</div>
            </div>
            <div class="order_confirmation_header_address" >
                <div class="address_title">收货地址</div>
                <div class="current_address" @click="addressShow">
                    <div class="current_address_info" v-if="currentAddress">
                        <div>{{currentAddress.address_text}}</div>
                        <div>{{currentAddress.name}}</div><div>{{currentAddress.phone}}</div>
                    </div>
                    <div class="current_address_info" v-else>暂无收货地址</div>
                    <div class="iconfont current_address_icon" >&#xe697;</div>
                </div>
            </div>
        </div>
        <div class="order_confirmation_content" v-if="shopCart">
            <CartCard :shopCartInfo="shopCart"/>
        </div>
        <div class="order_confirmation_footer">
            <div class="total_price">实付金额: <b>￥{{ total }}</b></div>
            <div class="submit" v-if="currentAddress" @click="show=!show">提交订单</div>
        </div>
        <!-- 蒙层 -->
        <div class="mask" v-if="show">
            <div class="mask_content">
                <div class="mask_content_title">确认要离开收银台?</div>
                <div class="mask_content_desc">请尽快完成支付,否则将被取消</div>
                <div class="mask_content_btn">
                    <div class="btn cancel" @click="show = false">取消订单</div>
                    <div class="btn confirm" @click="offOrder">确定支付</div>
                </div>
            </div>
        </div>
    </div>  
</template>

<style lang="scss" scoped>
@import "@/style/viriables.scss";
.order_confirmation {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    background-color: #eee;

    &_header {
        padding: .18rem;
        height: 1.6rem;
        background-image: linear-gradient(0deg, rgba(0, 145, 255, 0.00) 4%, #0091FF 50%);
        background-size: 100% 1.6rem;
        background-repeat: no-repeat;
        
        &_title {
            display: flex;
            color: $bgColor;
            
            .title_back {
                font-size: .22rem;
            }
            .title_text {
                flex: 1;
                text-align: center;
                font-size: .16rem;
            }
        }
        &_address {
            padding: .18rem;
            background-color: $bgColor;
            margin-top: .28rem;
            line-height: .22rem;
            font-size: .16rem;
            color: $content_fontcolor;
            border-radius: .04rem;
            .address_title {
                margin-bottom: .18rem;
            }
            .current_address {
                display: flex;
                justify-content: space-between;

                &_info {
                    div:last-child {
                        font-size: .12rem;
                    }
                }

                &_icon {
                    transform: rotate(180deg);
                    margin-right: .08rem;
                    display: flex;
                    flex-direction: column;
                    justify-content: center;
                }
            }
        }
    }

    &_content {
        width: 100%;
        position: absolute;
        top: 2rem;
        bottom: .5rem;
        box-sizing: border-box;
        overflow-y: scroll;
    }

    &_footer {
        height: .5rem;
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        background-color: $bgColor;
        line-height: .5rem;
        display: flex;
        
        .total_price {
            flex: 1;
            padding-left: .18rem;
        }
        .submit {
            width: 1rem;
            height: .5rem;
            background-color: $btn-bgColor;
            color: $bgColor;
            text-align: center;
            font-size: .14rem;
        }
    }

    // 蒙层
    .mask {
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        z-index: 999;
        background-color: rgba($color: #000000, $alpha: .5);
        display: flex;
        justify-content: center;
        align-items: center;

        &_content {
            width: 80%;
            padding: .24rem;
            box-sizing: border-box;
            background-color: $bgColor;
            border-radius: .04rem;
            text-align: center;

            &_title {
                font-size: .18rem;
                font-weight: bold;
                color: $content_fontcolor;
            }
            &_desc {
                margin: .12rem 0;
                line-height: .2rem;
                font-size: .14rem;
                color: $medium-fontColor;
            }
            &_btn {
                display: flex;
                justify-content: center;

                .btn {
                    width: .8rem;
                    height: .32rem;
                    border-radius: .24rem;
                    font-size: .14rem;
                    line-height: .32rem;
                }
                .cancel {
                    margin-right: .12rem;
                    border: solid .01rem $btn-bgColor;
                    color: $btn-bgColor;
                }
                .confirm {
                    background-color: $btn-bgColor;
                    color: $bgColor;
                }
            }
        }
    }
}

</style>